const storage = {
    // 设置存储
    set(key, data) {
        try {
            uni.setStorageSync(key, data)
        } catch (e) {
            console.error('存储失败:', e)
        }
    },
    
    // 获取存储
    get(key) {
        try {
            return uni.getStorageSync(key)
        } catch (e) {
            console.error('获取存储失败:', e)
            return null
        }
    },
    
    // 移除存储
    remove(key) {
        try {
            uni.removeStorageSync(key)
        } catch (e) {
            console.error('移除存储失败:', e)
        }
    },
    
    // 清空存储
    clear() {
        try {
            uni.clearStorageSync()
        } catch (e) {
            console.error('清空存储失败:', e)
        }
    }
}

// 用户相关的存储key
const USER_INFO_KEY = 'userInfo'
const TOKEN_KEY = 'token'

// 扩展 storage
export const userStorage = {
    // 保存用户信息
    setUserInfo(userInfo) {
        storage.set(USER_INFO_KEY, userInfo)
    },
    // 获取用户信息
    getUserInfo() {
        return storage.get(USER_INFO_KEY)
    },
    // 保存token
    setToken(token) {
        storage.set(TOKEN_KEY, token)
    },
    // 获取token
    getToken() {
        return storage.get(TOKEN_KEY)
    },
    // 保存是否需要手机号验证
    setNeedPhone(needPhone) {
        storage.set('needPhone', needPhone)
    },
    // 获取是否需要手机号验证
    getNeedPhone() {
        return storage.get('needPhone')
    },
    // 清除用户信息
    clear() {
        storage.remove(USER_INFO_KEY)
        storage.remove(TOKEN_KEY)
        storage.remove('needPhone')
    },
    // 判断是否登录
    isLogin() {
        return !!this.getToken()
    },
    // 检查是否需要手机号授权，返回 Promise
    checkPhoneAuth() {
        return new Promise((resolve, reject) => {
            if (!this.isLogin()) {
                reject(new Error('请先登录'))
                return
            }
            
            const userInfo = this.getUserInfo()
            if (!userInfo.userPhone) {
                reject(new Error('需要手机号授权'))
                return
            }
            
            resolve()
        })
    }
}

export default storage 